P11-1. Grafana 상관분석과 Kiali 토폴로지 - 이론 개념
Part 11 (이론): LGTM의 완성 — Grafana 3대 신호 상관분석(Correlation)과 Kiali 메시 토폴로지
핵심 학습 목표
- 메트릭(
VictoriaMetrics), 로그(Loki), 트레이스(Tempo)를 단순히 한곳에 모아두는 것을 넘어, 장애 지점에서 단 한 번의 클릭으로Metric → Trace → Log를 넘나드는 상관분석(Correlation) 의 원리를 설명할 수 있다. - 시계열 메트릭 그래프 위에 실제 느렸던 요청의
Trace ID표본을 심어 두는Exemplar(이그젬플러) 와 Grafana의traceToLogsV2연결 구조를 이해한다. - 서비스 메시 전용 관제탑인
Kiali가 어떻게VictoriaMetrics의 RED/TCP 메트릭과 Istio CRD를 결합해 실시간 동서 트래픽 지도(Topology Graph) 를 그려내는지 파악한다. istioctl analyze와Kiali의 설정 정합성 검증(Validation) 으로 YAML 오타나 라우팅 충돌을 사전에 적발하는 원리를 익힌다.
1. 새벽 3시 장애 현장의 비극: 왜 도구가 3개면 복구 시간(MTTR)이 길어질까?
많은 기업이 메트릭은 Prometheus에, 로그는 ELK에, 트레이스는 Jaeger에 따로따로 구축해 놓고 "우리도 관측성 3대 요소를 다 갖췄다!" 고 말합니다.
하지만 새벽 3시에 결제 장애 알람이 울리면 어떤 일이 벌어질까요?
- 엔지니어가 메트릭 대시보드를 열어 "어? 03시 02분에
p99지연 시간이 5초로 튀었네!" 를 확인합니다. - 이제 로그 화면(다른 창) 을 열어 시간 범위를 03시 01분~03시 03분으로 수동 입력하고, 수만 줄의 로그 중에서 어느 요청이 5초 걸렸는지 눈으로 스크롤하며 찾습니다.
- 겨우 의심스러운
request_id를 복사해서 트레이스 화면(또 다른 창) 에 붙여 넣었지만, 샘플링이 안 되어 있거나 포맷이 달라 조회가 안 됩니다.
이렇게 세 데이터가 서로 남남처럼 끊어져 있는 상태를 사일로화된 관측(Siloed Observability) 이라고 부릅니다.
LGTM 스택의 진짜 가치는 가운데 글자인 G (Grafana) 가 M(VictoriaMetrics) · T(Tempo) · L(Loki) 세 저장소를 하나의 핏줄(Trace ID & Pod Label)로 묶어 1클릭 점프를 가능하게 해준다는 데 있습니다!
2. 핵심 해부 ①: Metric → Trace → Log 1클릭 상관분석 (Exemplar & traceToLogsV2)
Grafana에서 어떻게 숫자 그래프(메트릭)를 클릭했는데 트레이스(Tempo)가 열리고, 트레이스를 클릭했는데 로그(Loki)가 열리는 걸까요? 그 비밀은 두 개의 연결 고리에 있습니다.
flowchart LR
subgraph STEP1["1단계 · Metric (VictoriaMetrics)"]
M_CHART["p99 응답 시간 그래프 급등!
그래프 꼭대기에 찍힌 별표(◆ Exemplar) 클릭!"]
end
subgraph STEP2["2단계 · Trace (Grafana Tempo)"]
T_SPAN["해당 요청의 전체 폭포수(Waterfall) 즉시 오픈!
범인 구간: Waypoint -> order-api-v1 (3,010ms)
Span 옆의 [Logs for this span] 버튼 클릭!"]
end
subgraph STEP3["3단계 · Log (Grafana Loki)"]
L_LINE["정확히 그 시각(±1초), 그 파드(waypoint/order-api)가 남긴
원본 액세스 로그 & 에러 메시지 즉시 하이라이트!"]
end
STEP1 ==>|"고리 1: Exemplar (trace_id 내장)"| STEP2
STEP2 ==>|"고리 2: traceToLogsV2 (시간 + 라벨 + TraceID 매칭)"| STEP3 용어 정리 — 상관분석을 가능하게 하는 2대 핵심 기술
Exemplar(이그젬플러 = 메트릭 바구니 속 대표 표본 바코드):- 원래 히스토그램 메트릭(
_bucket)은 "3초 이상 걸린 요청이 5건 있었다" 처럼 숫자(개수) 만 기록하고, 그 5건이 누구였는지는 버립니다. - 하지만
Exemplar기능을 켜면, 프록시가 히스토그램 바구니의 숫자를 올릴 때 "참고로 방금 3초 걸린 그 요청의Trace ID는4bf92f35...번이었어!" 라는 대표 샘플 꼬리표(Exemplar) 를 메트릭 숫자 옆에 작은 포스트잇처럼 딱 붙여 둡니다! - 덕분에 Grafana 메트릭 그래프 위에 작은 다이아몬드 점(
◆)들이 찍히고, 그 점을 클릭하는 순간4bf92f35...번 트레이스 화면으로 1초 만에 날아갈 수 있습니다!
- 원래 히스토그램 메트릭(
traceToLogsV2&tracesToMetrics(데이터소스 간 교차 참조 설정):- Grafana에
Tempo데이터소스를 등록할 때 "이 트레이스의 Span에 적힌namespace와pod라벨을 가져다가, 해당 Span의 시작 시각(startTime)부터 종료 시각(endTime)까지Loki데이터소스에서 자동으로 조회해 주는 버튼(traceToLogsV2)을 만들어라!" 라고 미리 연결선을 이어 두는 설정입니다.
- Grafana에
3. 핵심 해부 ②: 서비스 메시의 종합 관제탑 — Kiali
Grafana가 시계열 차트와 로그·트레이스 분석의 제왕이라면, Kiali(키알리) 는 오직 Istio 서비스 메시만을 위해 탄생한 시각적 지휘 통제실(Mesh Control Tower) 입니다!
flowchart TB
subgraph INPUTS["Kiali가 읽어 들이는 3가지 정보원"]
PROM["1. VictoriaMetrics (Prometheus API)
istio_requests_total (L7 HTTP)
istio_tcp_sent_bytes_total (L4 HBONE)"]
K8S["2. Kubernetes & Istio API
Pod, Service, Gateway(Waypoint),
HTTPRoute, AuthorizationPolicy, WorkloadEntry"]
TEMPO["3. Grafana Tempo
서비스별 분산 트레이스 (Spans)"]
end
subgraph KIALI_FEATURES["Kiali가 제공하는 3대 핵심 무기"]
MAP["무기 1 · 실시간 서비스 토폴로지 지도 (Traffic Graph)
- 누가 누구와 통신하는지 애니메이션 화살표 표시
- mTLS 자물쇠(🔒) 및 HBONE 터널 적용 여부 표시
- 90:10 카나리 비율 및 5xx 에러 구간 빨간색 경보!"]
WIZ["무기 2 · Ambient Mesh(ztunnel + Waypoint) 상태 가시화
- 파드별 사이드카 유무 및 Waypoint 경유 여부 한눈에 확인
- 외부 Linux VM(WorkloadEntry/ServiceEntry)까지 지도에 표시!"]
VAL["무기 3 · 실시간 설정 정합성 검사기 (Istio Config Validation)
- 오타가 난 VirtualService, 연결 안 된 Gateway,
충돌하는 AuthorizationPolicy에 즉시 경고등(KIAxxxx) 표시!"]
end
PROM --> KIALI_FEATURES
K8S --> KIALI_FEATURES
TEMPO --> KIALI_FEATURES 용어 정리 —
Kiali 와 istioctl analyze
Kiali(키알리): 그리스어로 "망원경(Spyglass)" 이라는 뜻입니다. 복잡하게 얽힌 수백 개의 마이크로서비스와 외부 VM들이 현재 몇 %의 비율로 통신하고 있는지, 어디서403이나503에러가 터지고 있는지를 살아 움직이는 네트워크 지도(Graph)로 보여주는 Istio 공식 대시보드입니다.istioctl analyze(CLI 정적/동적 분석기):
Kiali 화면에 뜨는 설정 검증 기능을 터미널 명령어로 실행하는 도구입니다. 클러스터의 현재 상태나 배포할 YAML 파일에 논리적 모순이 없는지 검사해✔ No validation issues found when analyzing namespace: part1-demo.처럼 즉석에서 건강 검진 결과를 알려줍니다!
🔗 다음 단계 (실습 검증)
이제 LGTM 스택의 화룡점정인 Grafana (11.5.2) 와 Kiali (v2.7.0) 를 클러스터에 배포하고,
- Grafana에
VictoriaMetrics·Loki·Tempo3대 데이터소스와traceToLogsV2상관분석 링크를 코드(Provisioning ConfigMap)로 자동 주입해 기동하고, - Kiali를
VictoriaMetrics·Tempo·Grafana와 연동해 띄운 뒤, - API와 CLI(
istioctl analyze)로 우리의 Ambient Mesh(study-client → Waypoint → order-api v1/v2+ 외부pg-vm.mesh.internal) 토폴로지 그래프 데이터와 설정 무결성을 100% 실측 검증합니다!
네비게이션
| 이전 | 목록 | 다음 |
|---|---|---|
| ◀ Part 10 실습 | 목록으로 | Part 11 실습 ▶ |